package Collection;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;

public class StreamDemo1 {
    public static void main(String[] args) {
        //创建一个集合，存放10个0-100之间的随机数
        Random rand = new Random();
        List<Integer> list = new ArrayList<>();
        for (int i =0;i<10;i++){
            list.add(rand.nextInt(100));
        }
        System.out.println(list);
        //将集合每个元素扩大3倍
        List<Integer> list2 = list.stream()//将集合变成一个Stream,流式处理集合元素
                                .map(e->e*3)//中间环节,将元素扩大3倍
                                .collect(Collectors.toList());//终端环节,收集处理后的元素
        System.out.println(list2);

        //获取list集合中所有的偶数
        List<Integer> list3 = list.stream()
                //中间环节,过滤器,仅保留满足lambda表达式返回true的元素
                .filter(e->e%2==0)
                .collect(Collectors.toList());
        System.out.println(list3);

        //去掉list集合中的重复元素
        List<Integer> list4 = list.stream()
                .distinct()//中间环节,去除重复元素
                .collect(Collectors.toList());
        System.out.println(list4);

        //对list集合元素排序(流式操作后排序完的元素会被收集到另一个集合中,不改变list集合本身)
        List<Integer> list5 = list.stream().sorted().collect(Collectors.toList());
        System.out.println(list5);
        //倒序
        List<Integer> list6 = list.stream().sorted(((o1, o2) -> o2-o1)).collect(Collectors.toList());
        System.out.println(list6);

        //对list集合元素扩大3倍,然后保留所有偶数,并去除重复值,然后从大到小排序
        List<Integer> list7 = list.stream().map(e->e*3).filter(e->e%2==0).distinct().sorted(((o1, o2) ->o2-o1 )).collect(Collectors.toList());
        System.out.println(list7);
    }
}
